<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <title>Dingo.pubsub._TopicTreeRoot</title>
  <link rel="stylesheet" href="epydoc.css" type="text/css" />
  <script type="text/javascript" src="epydoc.js"></script>
</head>

<body bgcolor="white" text="black" link="blue" vlink="#204080"
      alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
       bgcolor="#a0c0ff" cellspacing="0">
  <tr valign="middle">
  <!-- Home link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="Dingo-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Tree link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Index link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Help link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Project homepage -->
      <th class="navbar" align="right" width="100%">
        <table border="0" cellpadding="0" cellspacing="0">
          <tr><th class="navbar" align="center"
            ><a class="navbar" target="_top" href="http://code.google.com/p/dingo-wsn/">Dingo</a></th>
          </tr></table></th>
  </tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
  <tr valign="top">
    <td width="100%">
      <span class="breadcrumbs">
        <a href="Dingo-module.html">Package&nbsp;Dingo</a> ::
        <a href="Dingo.pubsub-module.html">Module&nbsp;pubsub</a> ::
        Class&nbsp;_TopicTreeRoot
      </span>
    </td>
    <td>
      <table cellpadding="0" cellspacing="0">
        <!-- hide/show private -->
        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
        <tr><td align="right"><span class="options"
            >[<a href="frames.html" target="_top">frames</a
            >]&nbsp;|&nbsp;<a href="Dingo.pubsub._TopicTreeRoot-class.html"
            target="_top">no&nbsp;frames</a>]</span></td></tr>
      </table>
    </td>
  </tr>
</table>
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class _TopicTreeRoot</h1><br /><br />
<center>
<center>  <map id="uml_class_diagram_for_dingo_pu_2" name="uml_class_diagram_for_dingo_pu_2">
<area shape="rect" href="Dingo.pubsub._TopicTreeNode&#45;class.html#getCallables" title="Get callables associated with this topic node" alt="" coords="69,36,312,55"/>
<area shape="rect" href="Dingo.pubsub._TopicTreeNode&#45;class.html#hasSubtopic" title="Return true only if topic string is one of subtopics of this node" alt="" coords="69,55,312,73"/>
<area shape="rect" href="Dingo.pubsub._TopicTreeNode&#45;class.html#getPathname" title="The complete node path to us, ie., the topic tuple that would lead to us" alt="" coords="69,73,312,92"/>
<area shape="rect" href="Dingo.pubsub._TopicTreeNode&#45;class.html#clearCallables" title="Abandon list of callables to caller." alt="" coords="69,92,312,111"/>
<area shape="rect" href="Dingo.pubsub._TopicTreeNode&#45;class.html#hasCallable" title="Return true if callable in this node" alt="" coords="69,111,312,129"/>
<area shape="rect" href="Dingo.pubsub._TopicTreeNode&#45;class.html#addCallable" title="Add a callable to list of callables for this topic node" alt="" coords="69,129,312,148"/>
<area shape="rect" href="Dingo.pubsub._TopicTreeNode&#45;class.html#getNode" title="Return ref to node associated with subtopic" alt="" coords="69,148,312,167"/>
<area shape="rect" href="Dingo.pubsub._TopicTreeNode&#45;class.html#removeCallable" title="Remove weak callable from our node (and return True)." alt="" coords="69,167,312,185"/>
<area shape="rect" href="Dingo.pubsub._TopicTreeNode&#45;class.html#createSubtopic" title="Create a child node for subtopic" alt="" coords="69,185,312,204"/>
<area shape="rect" href="Dingo.pubsub._TopicTreeNode&#45;class.html" title="A node in the topic tree." alt="" coords="68,11,313,205"/>
<area shape="rect" href="Dingo.pubsub._TopicTreeRoot&#45;class.html#callbackDeadLimit" title="Dingo.pubsub._TopicTreeRoot.callbackDeadLimit" alt="" coords="17,252,364,271"/>
<area shape="rect" href="Dingo.pubsub._TopicTreeRoot&#45;class.html#numListeners" title="Return a pair (live, dead) with count of live and dead listeners in tree" alt="" coords="17,273,364,292"/>
<area shape="rect" href="Dingo.pubsub._TopicTreeRoot&#45;class.html#__str__" title="Print us in a not&#45;so&#45;friendly, but readable way, good for debugging." alt="" coords="17,292,364,311"/>
<area shape="rect" href="Dingo.pubsub._TopicTreeRoot&#45;class.html#__init__" title="Dingo.pubsub._TopicTreeRoot.__init__" alt="" coords="17,311,364,329"/>
<area shape="rect" href="Dingo.pubsub._TopicTreeRoot&#45;class.html#getTopics" title="Return the list of topics for given listener" alt="" coords="17,329,364,348"/>
<area shape="rect" href="Dingo.pubsub._TopicTreeRoot&#45;class.html#unsubscribe" title="Remove listener from given list of topics." alt="" coords="17,348,364,367"/>
<area shape="rect" href="Dingo.pubsub._TopicTreeRoot&#45;class.html#isSubscribed" title="Return true if listener is registered for topic specified." alt="" coords="17,367,364,385"/>
<area shape="rect" href="Dingo.pubsub._TopicTreeRoot&#45;class.html#unsubAll" title="Unsubscribe all listeners registered for any topic in topicList." alt="" coords="17,385,364,404"/>
<area shape="rect" href="Dingo.pubsub._TopicTreeRoot&#45;class.html#addTopic" title="Add topic to tree if doesnt exist, and add listener to topic node" alt="" coords="17,404,364,423"/>
<area shape="rect" href="Dingo.pubsub._TopicTreeRoot&#45;class.html#sendMessage" title="Send a message for given topic to all registered listeners." alt="" coords="17,423,364,441"/>
<area shape="rect" href="Dingo.pubsub._TopicTreeRoot&#45;class.html#printCallbacks" title="Dingo.pubsub._TopicTreeRoot.printCallbacks" alt="" coords="17,441,364,460"/>
<area shape="rect" href="Dingo.pubsub._TopicTreeRoot&#45;class.html" title="The root of the tree knows how to access other node of the tree and is the gateway of the tree user to the tree nodes." alt="" coords="16,235,365,461"/>
</map>
  <img src="uml_class_diagram_for_dingo_pu_2.gif" alt='' usemap="#uml_class_diagram_for_dingo_pu_2" ismap="ismap" class="graph-without-title" />
</center></center>
<hr />
<p>The root of the tree knows how to access other node of the tree and is
  the gateway of the tree user to the tree nodes. It can create topics, and
  and remove callbacks, etc.</p>
  For efficiency, it stores a dictionary of listener-topics, so that 
  unsubscribing a listener just requires finding the topics associated to a
  listener, and finding the corresponding nodes of the tree. Without it, 
  unsubscribing would require that we search the whole tree for all nodes 
  that contain given listener. Since Publisher is a singleton, it will 
  contain all topics in the system so it is likely to be a large tree. 
  However, it is possible that in some runs, unsubscribe() is called very 
  little by the user, in which case most unsubscriptions are automatic, ie 
  caused by the listeners dying. In this case, a flag is set to indicate 
  that the dictionary should be cleaned up at the next opportunity. This is
  not necessary, it is just an optimization.<br /><br />

<!-- ==================== INSTANCE METHODS ==================== -->
<a name="section-InstanceMethods"></a>
<table class="summary" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
  <td colspan="2" class="table-header">
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
      <tr valign="top">
        <td align="left"><span class="table-header">Instance Methods</span></td>
        <td align="right" valign="top"
         ><span class="options">[<a href="#section-InstanceMethods"
         class="privatelink" onclick="toggle_private();"
         >hide private</a>]</span></td>
      </tr>
    </table>
  </td>
</tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="Dingo.pubsub._TopicTreeRoot-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>)</span></td>
          <td align="right" valign="top">
            
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="addTopic"></a><span class="summary-sig-name">addTopic</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">topic</span>,
        <span class="summary-sig-arg">listener</span>)</span><br />
      Add topic to tree if doesnt exist, and add listener to topic 
      node</td>
          <td align="right" valign="top">
            
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="getTopics"></a><span class="summary-sig-name">getTopics</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">listener</span>)</span><br />
      Return the list of topics for given listener</td>
          <td align="right" valign="top">
            
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="Dingo.pubsub._TopicTreeRoot-class.html#isSubscribed" class="summary-sig-name">isSubscribed</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">listener</span>,
        <span class="summary-sig-arg">topic</span>=<span class="summary-sig-default">None</span>)</span><br />
      Return true if listener is registered for topic specified.</td>
          <td align="right" valign="top">
            
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="Dingo.pubsub._TopicTreeRoot-class.html#unsubscribe" class="summary-sig-name">unsubscribe</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">listener</span>,
        <span class="summary-sig-arg">topicList</span>)</span><br />
      Remove listener from given list of topics.</td>
          <td align="right" valign="top">
            
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="Dingo.pubsub._TopicTreeRoot-class.html#unsubAll" class="summary-sig-name">unsubAll</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">topicList</span>,
        <span class="summary-sig-arg">onNoSuchTopic</span>)</span><br />
      Unsubscribe all listeners registered for any topic in 
      topicList.</td>
          <td align="right" valign="top">
            
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="Dingo.pubsub._TopicTreeRoot-class.html#sendMessage" class="summary-sig-name">sendMessage</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">topic</span>,
        <span class="summary-sig-arg">message</span>,
        <span class="summary-sig-arg">onTopicNeverCreated</span>)</span><br />
      Send a message for given topic to all registered listeners.</td>
          <td align="right" valign="top">
            
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="numListeners"></a><span class="summary-sig-name">numListeners</span>(<span class="summary-sig-arg">self</span>)</span><br />
      Return a pair (live, dead) with count of live and dead listeners 
      in tree</td>
          <td align="right" valign="top">
            
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr class="private">
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="__rootNotifyDead"></a><span class="summary-sig-name">__rootNotifyDead</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">dead</span>)</span></td>
          <td align="right" valign="top">
            
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr class="private">
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="Dingo.pubsub._TopicTreeRoot-class.html#__getTreeNode" class="summary-sig-name">__getTreeNode</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">topic</span>,
        <span class="summary-sig-arg">make</span>=<span class="summary-sig-default">False</span>)</span><br />
      Return the tree node for 'topic' from the topic tree.</td>
          <td align="right" valign="top">
            
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="printCallbacks"></a><span class="summary-sig-name">printCallbacks</span>(<span class="summary-sig-arg">self</span>)</span></td>
          <td align="right" valign="top">
            
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="Dingo.pubsub._TopicTreeRoot-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>)</span><br />
      Print us in a not-so-friendly, but readable way, good for 
      debugging.</td>
          <td align="right" valign="top">
            
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr class="private">
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="Dingo.pubsub._TopicTreeRoot-class.html#_TopicTreeRoot__getTreeNode" class="summary-sig-name">_TopicTreeRoot__getTreeNode</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">topic</span>,
        <span class="summary-sig-arg">make</span>=<span class="summary-sig-default">False</span>)</span><br />
      Return the tree node for 'topic' from the topic tree.</td>
          <td align="right" valign="top">
            
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr class="private">
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="_TopicTreeRoot__rootNotifyDead"></a><span class="summary-sig-name">_TopicTreeRoot__rootNotifyDead</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">dead</span>)</span></td>
          <td align="right" valign="top">
            
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
  <tr>
    <td colspan="2" class="summary">
    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="Dingo.pubsub._TopicTreeNode-class.html">_TopicTreeNode</a></code></b>:
      <code><a href="Dingo.pubsub._TopicTreeNode-class.html#addCallable">addCallable</a></code>,
      <code><a href="Dingo.pubsub._TopicTreeNode-class.html#clearCallables">clearCallables</a></code>,
      <code><a href="Dingo.pubsub._TopicTreeNode-class.html#createSubtopic">createSubtopic</a></code>,
      <code><a href="Dingo.pubsub._TopicTreeNode-class.html#getCallables">getCallables</a></code>,
      <code><a href="Dingo.pubsub._TopicTreeNode-class.html#getNode">getNode</a></code>,
      <code><a href="Dingo.pubsub._TopicTreeNode-class.html#getPathname">getPathname</a></code>,
      <code><a href="Dingo.pubsub._TopicTreeNode-class.html#hasCallable">hasCallable</a></code>,
      <code><a href="Dingo.pubsub._TopicTreeNode-class.html#hasSubtopic">hasSubtopic</a></code>,
      <code><a href="Dingo.pubsub._TopicTreeNode-class.html#removeCallable">removeCallable</a></code>
      </p>
    <div class="private">    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="Dingo.pubsub._TopicTreeNode-class.html">_TopicTreeNode</a></code></b> (private):
      <code><a href="Dingo.pubsub._TopicTreeNode-class.html#_TopicTreeNode__cleanupDead">_TopicTreeNode__cleanupDead</a></code>,
      <code><a href="Dingo.pubsub._TopicTreeNode-class.html#_TopicTreeNode__notifyDead">_TopicTreeNode__notifyDead</a></code>
      </p></div>
    </td>
  </tr>
</table>
<!-- ==================== CLASS VARIABLES ==================== -->
<a name="section-ClassVariables"></a>
<table class="summary" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
  <td colspan="2" class="table-header">
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
      <tr valign="top">
        <td align="left"><span class="table-header">Class Variables</span></td>
        <td align="right" valign="top"
         ><span class="options">[<a href="#section-ClassVariables"
         class="privatelink" onclick="toggle_private();"
         >hide private</a>]</span></td>
      </tr>
    </table>
  </td>
</tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="callbackDeadLimit"></a><span class="summary-name">callbackDeadLimit</span> = <code title="10">10</code>
    </td>
  </tr>
</table>
<!-- ==================== METHOD DETAILS ==================== -->
<a name="section-MethodDetails"></a>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
  <td colspan="2" class="table-header">
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
      <tr valign="top">
        <td align="left"><span class="table-header">Method Details</span></td>
        <td align="right" valign="top"
         ><span class="options">[<a href="#section-MethodDetails"
         class="privatelink" onclick="toggle_private();"
         >hide private</a>]</span></td>
      </tr>
    </table>
  </td>
</tr>
</table>
<a name="__init__"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>)</span>
    <br /><em class="fname">(Constructor)</em>
  </h3>
  </td><td align="right" valign="top"
    >&nbsp;
    </td>
  </table>
  
  
  <dl class="fields">
    <dt>Overrides:
      <a href="Dingo.pubsub._TopicTreeNode-class.html#__init__">_TopicTreeNode.__init__</a>
    </dt>
  </dl>
</td></tr></table>
</div>
<a name="isSubscribed"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">isSubscribed</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">listener</span>,
        <span class="sig-arg">topic</span>=<span class="sig-default">None</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    >&nbsp;
    </td>
  </table>
  
  Return true if listener is registered for topic specified. If no topic
  specified, return true if subscribed to something. Use 
  topic=getStrAllTopics() to determine if a listener will receive messages 
  for all topics.
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="unsubscribe"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">unsubscribe</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">listener</span>,
        <span class="sig-arg">topicList</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    >&nbsp;
    </td>
  </table>
  
  Remove listener from given list of topics. If topicList doesn't have 
  any topics for which listener has subscribed, nothing happens.
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="unsubAll"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">unsubAll</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">topicList</span>,
        <span class="sig-arg">onNoSuchTopic</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    >&nbsp;
    </td>
  </table>
  
  Unsubscribe all listeners registered for any topic in topicList. If a 
  topic in the list does not exist, and onNoSuchTopic is not None, a call 
  to onNoSuchTopic(topic) is done for that topic.
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="sendMessage"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">sendMessage</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">topic</span>,
        <span class="sig-arg">message</span>,
        <span class="sig-arg">onTopicNeverCreated</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    >&nbsp;
    </td>
  </table>
  
  Send a message for given topic to all registered listeners. If topic 
  doesn't exist, call onTopicNeverCreated(topic).
  <dl class="fields">
    <dt>Overrides:
      <a href="Dingo.pubsub._TopicTreeNode-class.html#sendMessage">_TopicTreeNode.sendMessage</a>
    </dt>
  </dl>
</td></tr></table>
</div>
<a name="__getTreeNode"></a>
<div class="private">
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">__getTreeNode</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">topic</span>,
        <span class="sig-arg">make</span>=<span class="sig-default">False</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    >&nbsp;
    </td>
  </table>
  
  Return the tree node for 'topic' from the topic tree. If it doesnt 
  exist and make=True, create it first.
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="__str__"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>)</span>
    <br /><em class="fname">(Informal representation operator)</em>
  </h3>
  </td><td align="right" valign="top"
    >&nbsp;
    </td>
  </table>
  
  Print us in a not-so-friendly, but readable way, good for 
  debugging.
  <dl class="fields">
    <dt>Overrides:
      <a href="Dingo.pubsub._TopicTreeNode-class.html#__str__">_TopicTreeNode.__str__</a>
        <dd><em class="note">(inherited documentation)</em></dd>
    </dt>
  </dl>
</td></tr></table>
</div>
<a name="_TopicTreeRoot__getTreeNode"></a>
<div class="private">
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">_TopicTreeRoot__getTreeNode</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">topic</span>,
        <span class="sig-arg">make</span>=<span class="sig-default">False</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    >&nbsp;
    </td>
  </table>
  
  Return the tree node for 'topic' from the topic tree. If it doesnt 
  exist and make=True, create it first.
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<br />
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
       bgcolor="#a0c0ff" cellspacing="0">
  <tr valign="middle">
  <!-- Home link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="Dingo-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Tree link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Index link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Help link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Project homepage -->
      <th class="navbar" align="right" width="100%">
        <table border="0" cellpadding="0" cellspacing="0">
          <tr><th class="navbar" align="center"
            ><a class="navbar" target="_top" href="http://code.google.com/p/dingo-wsn/">Dingo</a></th>
          </tr></table></th>
  </tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
  <tr>
    <td align="left" class="footer">
    <a href="epydoc-log.html">Generated by Epydoc
    3.0beta1 on Tue Jun  3 00:42:57 2008</a>
    </td>
    <td align="right" class="footer">
      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
    </td>
  </tr>
</table>

<script type="text/javascript">
  <!--
  // Private objects are initially displayed (because if
  // javascript is turned off then we want them to be
  // visible); but by default, we want to hide them.  So hide
  // them unless we have a cookie that says to show them.
  checkCookie()
  // -->
</script>
  
</body>
</html>
